template<class T>
inline T fastIn() {
    register char c=0;
    register T a=0;
    bool neg=false;
    while(c<33)c=getchar();
    while(c>33) {
        if(c=='-') {
            neg=true;
        } else {
            a= (a*10)+(c-'0');
        }
        c=getchar();
    }
    return neg?-a:a;
}
template<class T>
inline void myOut(T a) {
    if(a) {
        int v=a%10;
        myOut(a/10);
        putchar( (char)(v+'0') );
    }

}
template<class T>
inline void fastOut(T a) {
    if(a== (T)0 ) {
        putchar('0');
    } else if(a< (T)0) {
        putchar('-');
        myOut(-a);
    } else {
        myOut(a);
    }
}